home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / misc / amag / AM9409_2.lha / ARexxManager / ArexxManager.script / ScriptManager2.1 < prev    next >
Text File  |  1994-07-28  |  8KB  |  233 lines

  1. /* ScriptManager 2.1 programmed by Karsten Wysocki 09.03.94*/
  2.  
  3. call addlib("rexxsupport.library",0,-30,0)
  4. call addlib("apig.library",0,-30,0)
  5.  
  6. call SET_APIG_GLOBALS()
  7.  
  8. portname = "ScriptManager"
  9. portlist = Showlist('p')
  10. if find(portlist,portname) > 0 then exit
  11. p = openport(portname)
  12.  
  13. request = "freq = ALLOCFILEREQUEST();
  14.            filename = REQUESTFILE(freq,multi,0,hail,dir,file,0,0,
  15.                                   null(),-10,-2,200,211,'22200a22'x);
  16.            call FREEFILEREQUEST(freq);
  17.            pos = index(filename,'/');
  18.            if pos = 0 then pos = index(filename,':');
  19.               else do;
  20.                      do forever;
  21.                      newpos = index(filename,'/',pos+1);
  22.                      if newpos > 0 then pos = newpos;
  23.                      else leave;
  24.                      end;
  25.                    end;
  26.            dir  = left(filename,pos);
  27.            file = delstr(filename,1,pos);"
  28.  
  29. multi  = 0
  30. actdir    = "REXX:"
  31. actfile   = ""
  32.  
  33. edit         = 10
  34. launch       = 20
  35. delete       = 30
  36. changeeditor = 40
  37. makeicon     = 50
  38. verscopy     = 60
  39.  
  40. scr          = LOCKPUBSCREEN("Workbench")
  41. scrvinfo     = GETVISUALINFO(scr)
  42. scrfont      = GETVALUE(scr,40,4,'p')
  43. glistpointer = ALLOCVEC(4,MEMF_CLEAR)
  44. conxgad      = CREATECONTEXT(glistpointer)
  45. previousgadget = conxgad
  46.  
  47. makegadget = "call SETNEWGADGET(newgadx,scrvinfo,scrfont,lft,top,wdt,hgt,
  48.                                 gadname,PLACETEXT_IN,gadnr,null());
  49.               previousgadget = CREATEGADGET(BUTTON_KIND,previousgadget,
  50.                                             newgadx,TAG_DONE,0)"
  51.  
  52. gadname = "Edit"
  53. gadnr   =  edit
  54. lft     = 3
  55. top     = 2
  56. wdt     = 60
  57. hgt     = 12
  58. newgadx = MAKENEWGADGET(scrvinfo,scrfont,lft,top,wdt,hgt,gadname,
  59.                         ,PLACETEXT_IN,gadnr,null())
  60. previousgadget = CREATEGADGET(BUTTON_KIND,previousgadget,newgadx,TAG_DONE,0)
  61.  
  62. gadname = "Launch"
  63. gadnr   =  launch
  64. lft     = 66
  65. interpret makegadget
  66.  
  67. gadname = "Delete"
  68. gadnr   =  delete
  69. lft     = 129
  70. interpret makegadget
  71.  
  72. gadname = "Editor"
  73. gadnr   =  changeeditor
  74. lft     = 3
  75. top     = 16
  76. interpret makegadget
  77.  
  78. gadname = "Icon"
  79. gadnr   =  makeicon
  80. lft     = 66
  81. interpret makegadget
  82.  
  83. gadname = "VCopy"
  84. gadnr   =  verscopy
  85. lft     = 129
  86. interpret makegadget
  87.  
  88.  
  89. wintitle = "ScriptManager2.1"
  90. winidcmp = CLOSEWINDOW+GADGETUP+GADGETDOWN+MOUSEMOVE
  91. winflags = WINDOWCLOSE+WINDOWDRAG+WINDOWDEPTH+GIMMEZEROZERO,
  92.            +ACTIVATE
  93.  
  94. w1  = OPENWINDOW(portname,0,211,200,45,2,4,winidcmp,winflags,wintitle,
  95.                  ,scr,0,null(),null(),conxgad)
  96. call GT_REFRESHWINDOW(w1,null())
  97. rpw1 = GETWINDOWRASTPORT(w1)
  98.  
  99.  
  100. exitme = 0
  101. do forever
  102.    x = waitpkt(portname)
  103.    do forever
  104.       msg = getpkt(portname)
  105.       if msg = '0000 0000'x then leave
  106.       msgclass  = getarg(msg,0)
  107.       if msgclass = DIE then exitme = 1
  108.       if msgclass = CLOSEWINDOW then exitme = 1
  109.       if msgclass = GADGETUP then
  110.          do
  111.            gadid  = getarg(msg,9)
  112.            select
  113.                  when gadid = edit then
  114.                       do
  115.                       editor = "ed"
  116.                       x = open('ed','Editor','R')
  117.                       if x = 1
  118.                          then do
  119.                               editor = readln('ed')
  120.                               call close('ed')
  121.                               end
  122.                       filename = ""
  123.                       file = actfile;dir = actdir
  124.                       hail = "Select Script to Edit"
  125.                       interpret request
  126.                       if filename ~= null()
  127.                          then do
  128.                               if editor = "ed" & file = "" then filename = filename || "Unnamed"
  129.                               ADDRESS COMMAND 'run "'editor'" "'filename'"'
  130.                               actfile = file;actdir = dir
  131.                               end
  132.                       end
  133.                  when gadid = launch then
  134.                       do
  135.                       file = actfile;dir = actdir
  136.                       hail = "Select Script to Launch"
  137.                       interpret request
  138.                       if file ~= "" & file ~= null()
  139.                          then do
  140.                               conname = compress(file)
  141.                               ADDRESS 'COMMAND' 'cd 'dir'0a'x'run sys:rexxc/RX >CON:0/9/200/202/'conname'/AUTO/WAIT "'file'"' '0a'x
  142.                               actfile = file;actdir = dir
  143.                               end
  144.                       end
  145.                  when gadid = delete then
  146.                       do
  147.                       file = "";dir = actdir
  148.                       hail = "Select Script to Delete"
  149.                       multi = 1
  150.                       interpret request
  151.                       multi = 0
  152.                       if file ~= "" & file ~= null()
  153.                          then do
  154.                               wtext = "Do you really want delete"
  155.                               gtext = " OK | CANCEL"
  156.                               rtext = compress(filename,'22'x)
  157.                               x = easyrequest(w1,wtext,rtext,gtext)
  158.                               filename = compress(filename,'0a'x)
  159.                               if x = 1
  160.                                  then do
  161.                                       ADDRESS COMMAND 'delete ' '22'x || filename || '22'x
  162.                                       actfile = ""
  163.                                       end
  164.                               end
  165.                       end
  166.                  when gadid = changeeditor then
  167.                       do
  168.                       file = "";dir = actdir
  169.                       hail = "Select new editor"
  170.                       interpret request
  171.                       if file ~= "" & file ~= null()
  172.                          then do
  173.                               call open('ed','Editor','W')
  174.                               call writeln('ed',filename)
  175.                               call close('ed')
  176.                               actfile = ""
  177.                               end
  178.                       end
  179.                  when gadid = makeicon then
  180.                       do
  181.                       file = actfile;dir = actdir
  182.                       hail = "Select script to make an icon"
  183.                       interpret request
  184.                       if file ~= "" & file ~= null()
  185.                          then do
  186.                               ADDRESS COMMAND 'Copy Icon 'filename'.info'
  187.                               actfile = file;actdir = dir
  188.                               end
  189.                       end
  190.                  when gadid = verscopy then
  191.                       do
  192.                       file = actfile;dir = actdir
  193.                       hail = "Select script to copy"
  194.                       interpret request
  195.                       if file ~= "" & file ~= null()
  196.                          then do
  197.                                pointpos = index(file,'.',length(file)-2)
  198.                                if pointpos = 0
  199.                                   then n = 1
  200.                                   else do
  201.                                        n = delstr(file,1,pointpos)
  202.                                        if datatype(n,NUMERIC)
  203.                                           then file = delstr(file,pointpos)
  204.                                           else n =1
  205.                                        end
  206.                                do forever
  207.                                   if exists(dir || file'.'n)
  208.                                   then n = n + 1
  209.                                   else do
  210.                                        ADDRESS COMMAND 'Copy ' filename dir || file'.'n
  211.                                        actfile = file'.'n;actdir = dir
  212.                                        leave
  213.                                        end
  214.                                end
  215.                               end
  216.                       end
  217.                  otherwise nop
  218.            end
  219.          end
  220.       x = reply(msg,0)
  221.    end
  222.    if exitme = 1 then leave
  223. end
  224.  
  225. call CLOSEWINDOW(w1)
  226. call UNLOCKPUBSCREEN(null(),scr)
  227. call FREEVISUALINFO(scrvinfo)
  228. call FREEGADGETS(conxgad)
  229. call FREETHIS(newgadx)
  230. call FREEVEC(glistpointer)
  231.  
  232. exit
  233.